package com.alibaba.compileflow.engine.core.builder.generator;

/**
 * An interface for a component that generates the executable Java source code
 * for a given process flow model.
 * <p>
 * This interface provides a simple, clean API for code generation without
 * caching complexity. All methods generate fresh code on-demand.
 *
 * @author yusu
 * @see AbstractProcessCodeGenerator
 */
public interface ProcessCodeGenerator {

    /**
     * Generates the Java source code for the process.
     * <p>
     * This method always generates fresh code based on the current flow model.
     * No caching is performed at this level - optimization is handled by
     * the upper-level ProcessEngine cache.
     *
     * @return The generated Java source code as a string.
     */
    String generateCode();

    /**
     * Returns the fully qualified class name of the Java class that will be
     * generated by this generator.
     *
     * @return The fully qualified class name (e.g., "com.alibaba.compileflow.process.T12345").
     */
    String getClassFullName();

}
